package main

import "fmt"

func longestWPI(hours []int) (ans int) {
	n := len(hours)
	s := make([]int, n+1)
	st := []int{0}
	for i, h := range hours {
		i++
		s[i] = s[i-1]
		if h > 8 {
			s[i]++
		} else {
			s[i]--
		}
		if s[i] < s[st[len(st)-1]] {
			st = append(st, i)
		}
	}
	fmt.Println(s)
	fmt.Println(st)
	for i := n; i > 0; i-- {
		for len(st) > 0 && s[i] > s[st[len(st)-1]] { // s[i] 当前点 要比 s[st[len(st)-1]] 最低点 大 才能说明是表现良好的时间段
			ans = max(ans, i-st[len(st)-1]) // [栈顶,i) 可能是最长子数组
			st = st[:len(st)-1]
		}
	}

	return ans
}

func max(a, b int) int {
	if b > a {
		return b
	}
	return a
}

func main() {
	a := []int{9, 9, 6, 0, 6, 6, 9}
	fmt.Println(longestWPI(a))
}
